Some conventional storage systems include storage controllers arranged in a high availability (HA) pair to protect against failure of one of the controllers. An additional protection against failure and data loss is the use of mirroring operations. In one example mirroring operation, a first storage controller in the high availability pair performs a write operation to a first virtual volume and then sends a mirroring write operation to its high availability partner. The high availability partner then performs the mirroring write operation to a second virtual volume. The virtual volumes are implemented on physical storage drives.
In the example mirroring operation above, mirroring write operations compete with storage drive operations from the perspective of a given storage controller. Specifically, taking the first storage controller for example, it is responsible for performing read and write operations on behalf of hosts. The first storage controller is also responsible for performing mirroring for the write operations associated with its partner controller. The first storage controller has a finite number of channels to its storage drives and partner controller and a finite number of ports available in its storage drives and partner controller. In this way, storage drive read and write operations and mirroring operations compete for bandwidth on those finite number of channels. Also, when storage drive read and write operations are communicated on channels used by mirroring operations, in addition to bandwidth constraints, the storage drive operations may cause delay in completing the mirroring operations. Therefore, a given HA arrangement may be limited in the number of operations it can perform within a given period of time.
Accordingly, the potential remains for improvements that, for example, result in a storage system that may direct communications for read and write operations to more efficiently use available channels and storage drive ports.